/**
 * API测试结果查看工具
 * 用于查看最近的API测试结果和日志
 */
const fs = require('fs');
const path = require('path');

// 定义要查看的文件
const files = [
  './api-key-test-success.log',
  './api-key-test-error.log',
  './doubao-vision-success.json',
  './doubao-vision-error.json'
];

// 查找最新的日志文件
const logDir = path.join(__dirname, 'logs');
let latestLogFile = null;

if (fs.existsSync(logDir)) {
  const logFiles = fs.readdirSync(logDir)
    .filter(file => file.endsWith('.log'))
    .sort()
    .reverse();
    
  if (logFiles.length > 0) {
    latestLogFile = path.join(logDir, logFiles[0]);
  }
}

console.log('========== API测试结果查看工具 ==========\n');

// 检查并显示文件内容
files.forEach(file => {
  if (fs.existsSync(file)) {
    try {
      const stats = fs.statSync(file);
      const content = fs.readFileSync(file, 'utf8');
      console.log(`文件: ${file}`);
      console.log(`大小: ${(stats.size / 1024).toFixed(2)} KB`);
      console.log(`修改时间: ${stats.mtime}`);
      console.log('内容预览:');
      
      try {
        // 尝试解析为JSON并格式化显示
        const jsonContent = JSON.parse(content);
        
        // 对于API响应，提取有用的部分
        if (jsonContent.response && jsonContent.response.content) {
          console.log('API响应内容:', jsonContent.response.content);
        } else if (jsonContent.choices && jsonContent.choices.length > 0) {
          console.log('API响应内容:', jsonContent.choices[0].message.content);
        } else if (jsonContent.error) {
          console.log('错误信息:', JSON.stringify(jsonContent.error, null, 2));
        } else {
          // 限制输出长度
          console.log(JSON.stringify(jsonContent, null, 2).substring(0, 500) + '...');
        }
      } catch (e) {
        // 不是JSON，显示前500个字符
        console.log(content.substring(0, 500) + '...');
      }
      
      console.log('\n-----------------------------------\n');
    } catch (err) {
      console.error(`无法读取文件 ${file}:`, err.message);
    }
  } else {
    console.log(`文件不存在: ${file}\n`);
  }
});

// 显示最新的日志文件
if (latestLogFile) {
  try {
    const stats = fs.statSync(latestLogFile);
    let content = fs.readFileSync(latestLogFile, 'utf8');
    
    console.log(`最新日志: ${path.basename(latestLogFile)}`);
    console.log(`大小: ${(stats.size / 1024).toFixed(2)} KB`);
    console.log(`修改时间: ${stats.mtime}`);
    
    // 如果日志太大，只显示最后的部分
    if (content.length > 2000) {
      content = '...\n' + content.substring(content.length - 2000);
    }
    
    console.log('日志内容:');
    console.log(content);
  } catch (err) {
    console.error(`无法读取日志文件 ${latestLogFile}:`, err.message);
  }
} else {
  console.log('未找到日志文件');
}

console.log('\n========== 结束 ==========');
